/**
 * Eya.com Inc.
 * Copyright (c) 2004-2014 All Rights Reserved.
 */
package com.hpe.core.controller;

import org.apache.log4j.Logger;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import com.hpe.business.controller.ReporterController;
import com.hpe.business.response.BaseResponseResults;
import com.hpe.core.enums.ErrorCode;
import com.hpe.core.exception.BusinessException;
import com.hpe.core.utils.DateUtils;

/**
 * controller基类
 * @author luolin
 *
 * @version $id:BaseController.java,v 0.1 2015年12月15日 上午11:01:50 luolin Exp $
 */
public class BaseController {

    /** 日志 */
    private static final Logger LOGGER = Logger.getLogger(ReporterController.class);

    /**
     * 统一异常处理
     * @param ex {@link Exception}
     * @return {@link ResponseResultsVo}
     * @Author : luolin. create at 2016年1月11日 上午10:17:20
     */
    @ExceptionHandler
    @ResponseBody
    public BaseResponseResults exceptionHandler(Exception ex) {
        LOGGER.error("【统一异常处理捕获异常】", ex);
        if (ex instanceof BusinessException) {
            return new BaseResponseResults(false, ((BusinessException) ex).getErrorCode().getCode(), ex.getMessage());
        } else {
            return new BaseResponseResults(false, ErrorCode.SYSTEM_ERROR.getCode(), "系统异常");
        }
    }

    /**
     * 起止日期校验
     * @param dateBegin 起始日期
     * @param dateEnd 结束日期
     */
    protected void validateDate(String dateBegin, String dateEnd) {
        validateDate(dateBegin, dateEnd, DateUtils.FORMAT_SHORT);
    }

    /**
     * 起止日期校验
     * @param dateBegin 起始日期
     * @param dateEnd 结束日期
     * @param format 日期格式
     */
    protected void validateDate(String dateBegin, String dateEnd, String format) {
        boolean validateFlag = true;
        try {
            validateFlag = DateUtils.compareDate(dateBegin, dateEnd, format);
        } catch (Exception e) {
            LOGGER.error("【日期校验失败】", e);
            throw new BusinessException(ErrorCode.WRONG_PARAM, "日期校验失败");
        }
        if (!validateFlag) {
            LOGGER.warn("【起始日期不能大于结束日期】");
            throw new BusinessException(ErrorCode.WRONG_PARAM, "起始日期不能大于结束日期");
        }
    }
}
